package com.attendance.www.hr.utils;

import java.math.BigDecimal;
import java.text.DecimalFormat;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;

/**
 * 
 * @author 工具类
 *
 */
public class ToolUtils {

	public static void main(String[] args) {
		 //System.out.println(stampToDate("1542260298910"));
		 //System.out.println(dateDiffHour("1542262298910","1542260298910","7199"));
		 //System.out.println(differentDays("2019-03-01","2019-03-08"));
	}
 
    /**
     * 两个日期相减，并小于seconds时间
     * @param startDate 开始日期
     * @param endDate	结束日期
     * @param seconds	大于小时，秒格式：7199
     * @return
     */
    public static boolean dateDiffHour(String startDates,String endDates,String seconds) {
    	boolean type=false;    	
    	long startLng =Long.parseLong(startDates);
    	long endLng = Long.parseLong(endDates);
    	long endSecondLng= Long.parseLong(seconds);
    	//获取秒数
    	long startSecondLng = (long)((startLng - endLng) / 1000);
    	//如果当前秒数大于seconds，返回TRUE
    	if(startSecondLng>endSecondLng) {
    		type=true;
    	}
    	//通过秒数，计算获取小时
    	/*Integer hour=null;	
    	BigDecimal digSeconds=new BigDecimal(seconds);
    	hour=digSeconds.divide(new BigDecimal(3600), 0,BigDecimal.ROUND_HALF_UP).intValue();*/
    	return type;
    }
    
    /**
	 * 时间戳转换日期类型
	 * @param val 时间戳：1542260298910
	 * @return 日期类型
	 */
    public static Date dateToStamp(String val){
        long lt = new Long(val);
        Date date = new Date(lt);
        return date;
    }
    
	/**
	 * 时间戳转换为日期格式：yyyy-MM-dd HH:mm:ss
	 * @param val 时间戳：1542260298910
	 * @return 字符串类型
	 */
    public static String stampToDate(String val){
    	String res;
        SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        long lt = new Long(val);
        Date date = new Date(lt);
        res = simpleDateFormat.format(date);
        return res;
    }
    
    /**
     * 字符串时间格式，格式化日期类型 24小时
     * @param val
     * @return
     */
    public static Date formatHoursData(String val) {
        SimpleDateFormat sDateFormat=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); //加上时间
        Date date = null;
		try {
			date = sDateFormat.parse(val);
		} catch (ParseException e) {
			e.printStackTrace();
		}
        return date;
    }
    
    /**
     * 字符串时间格式，格式化日期
     * @param val
     * @return
     */
    public static Date formatData(String val) {
        SimpleDateFormat sDateFormat=new SimpleDateFormat("yyyy-MM-dd"); //加上时间
        Date date = null;
		try {
			date = sDateFormat.parse(val);
		} catch (ParseException e) {
			e.printStackTrace();
		}
        return date;
    }
    
    /**
    * 日期转换成字符串
    * @param date
    * @return
    */
    public static String dateToStr(Date date) {
        SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");
        String str = format.format(date);
        return str;
    }
    
    /**
    * 日期转换成字符串年月
    * @param date
    * @return
    */
    public static String dateToYearMonthStr(Date date) {
        SimpleDateFormat format = new SimpleDateFormat("yyyy-MM");
        String str = format.format(date);
        return str;
    }
    
    /**
    * 日期转换成字符串年
    * @param date
    * @return
    */
    public static String dateToYearStr(Date date) {
        SimpleDateFormat format = new SimpleDateFormat("yyyy");
        String str = format.format(date);
        return str;
    }
    
    /**
    * 日期转换成字符串
    * @param date
    * @return
    */
    public static String dateTimeToStr(Date date) {
        SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        String str = format.format(date);
        return str;
    }
    
    /**
     * 时间相减得到天数
     * @param beginDateStr
     * @param endDateStr
     * @return
     */
    public static long differentDays(String beginDateStr,String endDateStr){
        long day=0;
        SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");    
        Date beginDate;
        Date endDate;
        try{
            beginDate = format.parse(beginDateStr);
            endDate= format.parse(endDateStr);    
            day=(endDate.getTime()-beginDate.getTime())/(24*60*60*1000);    
        } 
        catch (ParseException e){
        	day=0;
        }   
        return day;
    }
    
    /**
     * 计算分钟，获取小时
     * @param hour 分钟
     * @return
     */
    public static double calculationHour(BigDecimal hour) {
	    int min = hour.intValue();
        int hours = (int) Math.floor(min / 60);
        int minute = min % 60;
        BigDecimal bd = new BigDecimal(hours+"."+minute); 
    	return bd.doubleValue();
    }
    
	/**
	 * 格式化两位小数
	 * @param value
	 * @return
	 */
    public static Double getDecimalFormat(Float value) {
		if(value>0) {
			// 格式化两位小数
			DecimalFormat decimalFormat = new DecimalFormat(".00");
			String strValue=decimalFormat.format(value);
			return Double.parseDouble(strValue);
		}
		return Double.parseDouble(value+"");
	}
}

